A typical data communications network includes multiple host computers (or hosts) which communicate with each other through a system of data communications devices (e.g., bridges, switches and routers) and transmission media (e.g., electrical cable, fiber-optic cable, and/or wireless connections). In general, a sending host exchanges data with a receiving host by packaging the data using a standard format or protocol to form one or more data-carrying structures (e.g., packets, frames or cells). The sending host then transfers these structures (hereinafter generally referred to as packets) to the receiving host through the above-described system of data communications devices and transmission media. The receiving host then unpackages and uses the data.
Some network arrangements allow hosts to communicate in a client/server manner. That is, one host operates as a client by sending a client request for a particular service to another host which operates as a server. The client request typically takes the form of one or more packets. In general, each of these client request packets includes, in a destination address field, a device address that uniquely identifies the server among the devices on the network. When the client sends the client request packets over the network, data communications devices positioned between the client and the server transfer the client request packets from the client to the server along some optimized network path based on the device address in the destination address field of each packet.
When the server receives the client request packets, the server typically authenticates the client request, provides the requested service (e.g., records a transaction), and sends a reply or confirmation (e.g., one or more reply packets) back to the client. Again, the data communications devices route the reply packets back to the client based on a device address, which identifies the client, in a destination address field of each packet forming the reply.
A server installation is a server configuration formed by one or more servers. To increase capacity at the server installation (i.e., in order to better service large volumes of client requests), it is tempting to increase the number of servers at the server installation. In one arrangement, one or more servers are added to the server installation. In this arrangement, the multiple servers are arranged to xe2x80x9cload sharexe2x80x9d the volume of client requests. That is, each server is configured to independently handle (or share) a particular portion of the load of client requests. If further capacity is required, the server installation can be scaled yet again by adding one or more additional servers in the same load sharing manner. With such an arrangement, it is important to prevent the possibility of two or more load sharing servers in the above-described server installation from providing the same service in response to a single client request.
Another environment which provides load balancing and fault tolerance is a conventional IBM Mainframe environment. In this environment, a source route bridged (SRB), token ring LAN network is used to connect a network of client workstations to a communications controller. One or more of these communications controllers is then attached to the mainframe server computer.
In order to provide load balancing and fault tolerance in this environment, it is common for there to be multiple communications controllers, connected to different rings with the same media access control (MAC) layer address. When a client workstation wishes to connect to the mainframe server, it typically will transmit an xe2x80x9cexplorerxe2x80x9d TEST frame on the token ring. The SRB network, which consists of a number of token ring LAN segments connected by source route bridges, forward the TEST explorer on all the rings of the network, including the multiple rings that contain the communications controllers configured with the server MAC address. One or more of these communications controllers will respond to the TEST explorer and the reply will be transmitted back through the SRB network to the client workstation.
Typically, the first reply that is received by the client workstation will be used. This reply contains a routing information field (RIF) that specifies a path through the SRB network back to the communications controller which sent it. Data packets that are then sent from the client workstation to the communications controller and back again contain this RIF along with the MAC addresses of the client workstation and communications controller. The combination uniquely identifies one of the multiple communications controllers that have the duplicate server MAC addresses.
Using this system, any number of communications controllers can have the same server MAC address as long as they are on different token ring LAN segments with different ring numbers. The client workstation only needs to know a single MAC address to reach any one of these controllers. If more controllers are added, or some are removed, there is no need for the client workstation configuration to be changed. The explorer TEST frames will always find one if one is available.
Networks may further include other specialized devices to coordinate network traffic in an organized fashion. For example, an Internet Protocol (IP) network may include a load director which physically separates two areas of the IP network. During operation, the load director attempts to reduce unnecessary network traffic in each of the two areas by filtering packets based on their IP source addresses. That is, the load director allows certain packets having particular IP source addresses to pass from one area to the other, while blocking passage of other packets having other IP source addresses. Accordingly, each network area is not deluged with unnecessary packets from the other network area. A manufacturer of such a load director is Cisco Systems of San Jose, Calif.
Due to a variety of technical and economic factors, the cost of implementing an Ethernet based LAN has become much less than the cost of implementing a token ring LAN. Ethernet LANs typically do not use SRB. They typically use transparent bridging to connect Ethernet LAN segments together. Transparently bridged LAN networks do not support multiple devices with the same MAC address. If 2 or more devices on a transparently bridged LAN have the same MAC address, it is an error that must be fixed in order for the LAN to operate properly. This means that the technique described above for providing fault tolerance and load balancing using duplicate MAC addresses cannot be used on a transparently bridged LAN and we must find an alternative.
The invention provides a way for transparently bridged LANs to achieve the same type fault tolerance and load balancing as the source route bridged LAN described above. In particular, the present invention is directed to techniques which enable a server installation to service a client request using a filter index that is different than a destination address associated with the client request. In such an arrangement, a client can generate a client request for a server installation having multiple servers in the same manner as it would for a server installation having a single server. Accordingly, when a server installation is scaled by increasing the number of servers, reconfiguration of the clients utilizing a server of the server installation is unnecessary.
In one embodiment, the data resides in a data structure having (i) a device identifier that uniquely identifies the server host installation (or simply server host) among multiple server hosts, and (ii) a filter index which is different than the device identifier. In this arrangement, a first filtering data communications device receives the data structure. If the filter index of the data structure complies with a first set of filtering criteria residing in the first filtering data communications device, the first filtering device transfers the data structure from the first filtering data communications device to the server host. If the filter index of the data structure does not comply with the first set of filtering criteria, the first filtering data communications device prevents transfer of the data structure from the first filtering data communications device to the server host. Content of the first set of filtering criteria, which resides in the first filtering data communications device, is coordinated with a second set of filtering criteria residing in a second filtering data communications device that is capable of transferring the data structure to the server host such that at most one filtering data communications device transfers the data structure to the server host.
In one arrangement, the first and second sets of filtering criteria are identical. In another arrangement, the first and second sets are similar so long as they direct only one filtering data communications device to handle the transfer of each packet.
In an arrangement where the server host includes multiple server computers (e.g., multiple servers) each of which is identifiable by the device identifier (e.g., the same destination address), transferring the data structure to the server host involves sending the data structure to one of the multiple server computers based on the filter index. Accordingly, only one of the multiple server computers receives the data structure for processing, thus preventing multiple server computers from inadvertently processing the same data structure.
Preferably, the filter index of the data structure includes a source identifier that uniquely identifies a client host among multiple client hosts, and the first set of filtering criteria includes a filter table. In this arrangement, the first filtering data communications device generates a key based on the source identifier of the filter index. Then, the first filtering data communications device selects, from the filter table, a filter table entry based on the key in order to determine whether the filter index complies with the first set of filtering criteria. If a device identifier of the selected filter table entry identifies the first filtering data communications device, the filter index complies with the first set of filtering criteria. If the device identifier of the selected filter table entry does not identify the first filtering data communications device, the filter index does not comply with the first set of filtering criteria.
In one arrangement involving the use of the filter table, the first filtering data communications device includes multiple ports. As such, transferring the data structure from the first filtering data communications device to the server host involves selecting one of the multiple ports of the first filtering data communications device based on the selected filter table entry, and sending the data structure to the server host from the selected one of the multiple ports.
The invention includes a load sharing arrangement. In such an arrangement, the first filtering data communications device transfers, from the first filtering data communications device to the server host, a first data structure provided by a first client host while preventing transfer, from the first filtering data communications device to the server host, of a second data structure provided by a second client host. Such an operation allows the second filtering data communications device to transfer the second data structure provided by the second client host in order to load share transfer of data structures from multiple client hosts to the server host with at most one filtering data communications device transferring each data structure to a particular server host.
In the load sharing arrangement, the first data communications device preferably provides a fault-tolerant feature. That is, the first data communications device can detect a failure of the second filtering data communications device, and transfer a third data structure from the second client host to the server host. Accordingly, when the second filtering data communications device handles a data stream from the second client host to the server host and then fails, the first filtering data communications device takes over for the second filtering data communications device in response to the failure to maintain transfer of the data stream from the second client host to the server host.
Preferably, the load sharing arrangement further includes a load redistribution feature. That is, the first and second filtering data communications devices can form an agreement that includes (i) the first filtering data communications device agreeing to transfer further data structures from the second client host to the server host and that (ii) the second filtering data communications device agreeing not to transfer further data structures from the second client host to the server host. Accordingly, the first filtering data communications device can receive a new data structure from the second client host, and transfer the new data structure to the server host in place of the second filtering data communications device. Such redistribution permits the first and second filtering data communications devices to balance the traffic load of data structures from multiple client hosts to the server host.
Another embodiment of the invention is directed to a computer program product that includes a computer readable medium having instructions stored thereon for transferring data from a client host to a server host. The data resides in a data structure having (i) a device identifier that uniquely identifies the server host among multiple server hosts, and (ii) a filter index that is different than the device identifier. The instructions, when processed by a first filtering data communications device, cause the first filtering data communications device to receive the data structure, and to either transfer the data structure to the server host or prevent transfer of the data to the server host. In particular, the instructions direct the first filtering data communications device to transfer the data structure from the first filtering data communications device to the server host when the filter index of the data structure complies with a first set of filtering criteria residing in the first filtering data communications device. The instructions direct the first filtering data communications device to prevent transfer of the data structure from the first filtering data communications device to the server host when the filter index of the data structure does not comply with the first set of filtering criteria. Content of the first set of filtering criteria residing in the first filtering data communications device is coordinated with a second set of filtering criteria residing in a second filtering data communications device that is capable of transferring the data structure to the server host such that at most one filtering data communications device transfers the data structure to the server host.
Another embodiment of the invention is directed to a server system for exchanging data with multiple client hosts. In this embodiment, data from a first client host resides in a first data structure having a first device identifier that uniquely identifies a server host among multiple server hosts and a first filter index that is different than the first device identifier. Additionally, data from a second client host resides in a second data structure having a second device identifier that uniquely identifies the server host among the multiple server hosts and a second filter index that is different than the second device identifier. The server system includes a first server computer and a second server computer that form at least a portion of a server host.
The server system further includes multiple filtering data communications devices, coupled to the first and second server computers, which transfer the data from the first and second client hosts to the first and second server computers. In particular, the multiple filtering data communications devices include a first filtering data communications device that receives the first data structure from the first client host and the second data structure from the second client host, and transfers the first data structure to the first server computer without transferring the second data structure to any of the multiple server computers according to a first set of filtering criteria. The multiple filtering data communications devices further include a second filtering data communications device that receives the first data structure from the first client host and the second data structure from the second client host, and transfers the second data structure to the second server computer without transferring the first data structure to any of the multiple server computers according to a second set of filtering criteria. Content of the first set of filtering criteria is coordinated with the second set of filtering criteria and content of the second set of filtering criteria is coordinated with the first set of filtering criteria such that at most one filtering data communications device transfers each of the first and second data structures to the multiple server computers.
In one arrangement of the server system embodiment, the first and second device identifiers are identical. Additionally, the first filtering data communications device is coupled to the first server computer and not coupled to the second server computer, and the second filtering data communications device is coupled to the second server computer and not coupled to the first server computer. This arrangement provides a one-to-one correspondence between the filtering data communications devices and the server computers.
In another arrangement of the server system embodiment, the first and second device identifiers are identical. Furthermore, the first filtering data communications device is coupled to both the first and second server computers, and the second filtering data communications device is coupled to both the first and second server computers. This arrangement provides a mesh configuration between the filtering data communications devices and the server computers.
The above-described features of the invention may be employed in data communications devices and other computerized devices such as those manufactured by Cisco Systems, Inc. of San Jose, Calif.